
from setting import BASE_URL
import requests
from loguru import logger
from utils.object_utils import cache

"""
作用：为所有接口提供一些共有功能，方便接口使用
具体包括：
    1. 返回完整的URL地址
    2. 重新封装get ,post方法
    3. 处理请求头
"""

class Base:

    def get_url(self,path,params=None):
        """
        返回一个完整的URL：http://ip:port/api?param
        :param path:接口路径
        :param params 查询参数
        """
        if params:
            full_path = BASE_URL + path + "?" + params
            return full_path
        return BASE_URL + path

    def get(self,url):
        """
        重新封装get方法
        (1) . 加上日志 : loguru
        (2) . 加上异常错误 : try ... expect
        :return:
        """
        result = None
        response = requests.get(url,headers=self._get_headers())
        try:
            result = response.json()
            logger.info("请求URL:{},返回结果:{}".format(url,result))
            return result
        except Exception as e:
            logger.error("请求get方法异常，返回数据{}".format(result))

    def post(self,url,data=None):
        result = None
        response = requests.post(url,json=data,headers=self._get_headers())
        try:
            result = response.json()
            logger.info("请求URL:{},请求体:{},返回结果:{}".format(url,data,result))
            return result
        except Exception as e:
            logger.error("请求post方法异常，返回数据{}".format(result))

    def _get_headers(self):
        headers = {"Content-Type":"application/json"}
        token = cache.get('token')
        if token:
            headers.update({'X-Litemall-Admin-Token':token})
            return headers
        return headers
